#/bin/bash

n=1
b=1024
flag="OK"

#Comparo si las salidas son iguales, si no lo son pongo en FAILED el flag
doDiff () {
	lineas=`diff -q /tmp/tp_out_text.txt /tmp/random.txt | wc -l`
	if [ $lineas -ne "0" ]
	then
		flag="FAILED"
	fi
	rm /tmp/tp_out_text.txt
}


if [ "$1" == "-h" ]
then
  echo "DESCRIPCIÓN
       Script de test para el TP0

       -n     Cantidad de veces que se desea correr el test. Default = 1.

       -b     Tamaño en byte de los archivos aleatorios generados. Default = 1024.

       -h     Imprime esta ayuda"
	exit 1
fi

if [ "$1" == "-b" ]
then
  b=$2
fi

if [ "$1" == "-n" ]
then
  n=$2
fi

if [ "$3" == "-b" ]
then
  b=$4
fi

if [ "$3" == "-n" ]
then
  n=$4
fi

echo -e "Archivos aleatorios de $b bytes, repitiendo $n veces.\n"

cont=0
while [ $cont -lt $n ]; do

	#Genero un archivo aleatorio
	head -c $b /dev/urandom > /tmp/random.txt

	#Genero Binario del archivo aleatorio
	cat /tmp/random.txt | ./tp0 -r -o /tmp/tp_out.txt

	#Ahora convierto el Binario a Texto probando las diferentes formas de input y output
	#Input: file - Output: stdout
	./tp0 -i /tmp/tp_out.txt > /tmp/tp_out_text.txt
	doDiff
	./tp0 -i /tmp/tp_out.txt -o - > /tmp/tp_out_text.txt
	doDiff

	#Input: file - Output: file
	./tp0 -i /tmp/tp_out.txt -o /tmp/tp_out_text.txt
	doDiff

	#Input: stdin - Output: file
	cat /tmp/tp_out.txt | ./tp0 -o /tmp/tp_out_text.txt
	doDiff

	cat /tmp/tp_out.txt | ./tp0 -i - -o /tmp/tp_out_text.txt
	doDiff

	#Input: stdin - Output: stdout
	cat /tmp/tp_out.txt | ./tp0 > /tmp/tp_out_text.txt
	doDiff

	cat /tmp/tp_out.txt | ./tp0 -i - -o - > /tmp/tp_out_text.txt
	doDiff

	
	let cont=cont+1
done

echo "Resultado: $flag"
